package com.example.demo01.demo;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.example.demo01.R;
import com.example.demo01.consts.ResultData;
import com.example.demo01.entity.UserDemo;
import com.example.demo01.fragments.TitleFragment;
import com.example.demo01.utils.ToastUtil;

public class IntentTestPage extends AppCompatActivity {

    private ToastUtil toastUtil = new ToastUtil(this);

    private TextView tv_test_name, tv_test_nickname;
    private EditText et_test_name;
    private Button btn_test_back;


    //. onCreate() 方法在 Activity 创建时调用，通常用于初始化 Activity 的 UI 和数据。
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent_test_page);
        EdgeToEdge.enable(this);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });

        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onCreate() 方法在 Activity 创建时调用，通常用于初始化 Activity 的 UI 和数据。");

        //. 添加标题
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.fl_title, TitleFragment.newInstance(getResources().getString(R.string.IntentTestDemo)))
                .commit();

        initView();
        try {
            UserDemo userDemo = (UserDemo) getIntent().getSerializableExtra("user");
            if (userDemo != null) {
                tv_test_name.setText(userDemo.getName());
                tv_test_nickname.setText(userDemo.getNickname());
            }
        } catch (Exception e) {
            toastUtil.showToast("获取数据失败");
        }
    }

    private void initView() {
        tv_test_name = findViewById(R.id.tv_test_name);
        tv_test_nickname = findViewById(R.id.tv_test_nickname);
        et_test_name = findViewById(R.id.et_test_name);
        btn_test_back = findViewById(R.id.btn_test_back);

        addListener();
    }

    private void addListener() {
        //. 返回数据给上一个页面
        btn_test_back.setOnClickListener(v -> {
            String data = et_test_name.getText().toString();
            if (data.isEmpty()) {
                toastUtil.showToast("请输入数据");
            } else {
                //. 返回数据给上一个页面
                Intent intent = new Intent();
                //. 将数据传递给上一个页面
                intent.putExtra(ResultData.RESULT_STRING_KEY, data);
                //. 设置返回结果
                setResult(RESULT_OK, intent);
                //. 结束当前 Activity
                IntentTestPage.this.finish();
            }
        });
    }


    //. onStart() 方法在 Activity 显示时调用，通常用于启动 Activity 的初始化操作。
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onStart() 方法在 Activity 显示时调用，通常用于启动 Activity 的初始化操作。");

    }

    //. onResume() 方法在 Activity 恢复时调用，通常用于恢复 Activity 的状态和数据。
    @Override
    protected void onResume() {
        super.onResume();
        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onResume() 方法在 Activity 恢复时调用，通常用于恢复 Activity 的状态和数据。");
    }

    //. onPause() 方法在 Activity 暂停时调用，通常用于保存 Activity 的状态和数据。
    @Override
    protected void onPause() {
        super.onPause();
        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onPause() 方法在 Activity 暂停时调用，通常用于保存 Activity 的状态和数据。");
    }

    //. onStop() 方法在 Activity 停止时调用，通常用于保存 Activity 的状态和数据。
    @Override
    protected void onStop() {
        super.onStop();
        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onStop() 方法在 Activity 停止时调用，通常用于保存 Activity 的状态和数据。");
    }

    //. onDestroy() 方法在 Activity 销毁时调用，通常用于释放资源。
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("LifeMsg", "第二个Activity(IntentTestPage) ——————> onDestroy() 方法在 Activity 销毁时调用，通常用于释放资源。");
    }
}